From: Andy Holmes Date: Mon, 5 Sep 2022 00:21:29 +0000 (-0700) Subject: panel: Add `PanelMenu.Button` menu when `menu-set` is emitted X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~435^2^2~52 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=990eb92bd91b08b6943ba969b0e00a4a98f75fbf;p=gnome-shell.git panel: Add `PanelMenu.Button` menu when `menu-set` is emitted When a `PanelMenu.Button` is added to the `statusArea`, its menu is added to the `PopupMenuManager` if it has one at the time. If a menu is added later or a new one set, the new menu is never added. Move the call to `PopupMenuManager.addMenu()` from `_addToPanelBox()` to `_onMenuSet()`, which is called when the `PanelMenu.Button` is added and whenever it emits the `menu-set` signal. Part-of: --- diff --git a/js/ui/panel.js b/js/ui/panel.js index 24248865b..94dffda73 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -707,8 +707,6 @@ class Panel extends St.Widget { box.insert_child_at_index(container, position); - if (indicator.menu) - this.menuManager.addMenu(indicator.menu); this.statusArea[role] = indicator; let destroyId = indicator.connect('destroy', emitter => { delete this.statusArea[role]; @@ -741,6 +739,8 @@ class Panel extends St.Widget { if (!indicator.menu || indicator.menu._openChangedId) return; + this.menuManager.addMenu(indicator.menu); + indicator.menu._openChangedId = indicator.menu.connect('open-state-changed', (menu, isOpen) => { let boxAlignment;